package org.zephy.guomi;

import cn.hutool.core.util.CharsetUtil;
import cn.hutool.crypto.SmUtil;
import cn.hutool.crypto.symmetric.SymmetricCrypto;

/**
 * 不带密钥的
 * 使用对称密码算法SM4加解密
 * 对称加密算法 在对称加密算法中，数据发信方将明文（原始数据）和加密密钥一起经过特殊加密算法处理后，使其变成复杂的加密密文发送出去。
 * 收信方收到密文后，若想解读原文，则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密，才能使其恢复成可读明文。
 * 在对称加密算法中，使用的密钥只有一个，发收信双方都使用这个密钥对数据进行加密和解密，这就要求解密方事先必须知道加密密钥。
 */
public class Sm4Test {
    public static void main(String[] args) {
        String content="hello world";
        SymmetricCrypto sm4= SmUtil.sm4();
        String encryptHex=sm4.encryptHex(content);
        String decryptStr=sm4.decryptStr(encryptHex, CharsetUtil.CHARSET_UTF_8);
        System.out.println("encoe:"+encryptHex);
        System.out.println("decode:"+decryptStr);
    }
}
